<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="ne32J" id="ne32J"><span data-lake-id="u0cd7e845" id="u0cd7e845">典型回答</span></h1>
  <p data-lake-id="u85985a4b" id="u85985a4b"><br></p>
  <p data-lake-id="ub139f7ca" id="ub139f7ca"><span data-lake-id="u12d1e1f4" id="u12d1e1f4">final、finally、finalize有什么区别？这个问题就像周杰、周杰伦和周星驰之间有啥关系的问题一样。其实没啥关系，放在一起比较无非是名字有点像罢了。</span></p>
  <p data-lake-id="ua4bcc9a2" id="ua4bcc9a2"><span data-lake-id="ue405c6c5" id="ue405c6c5">​</span><br></p>
  <p data-lake-id="u166b99f5" id="u166b99f5"><span data-lake-id="u19314f67" id="u19314f67">final、finally和finalize是Java中的三个不同的概念。</span></p>
  <p data-lake-id="u0767450e" id="u0767450e"><span data-lake-id="u3950b8ca" id="u3950b8ca">​</span><br></p>
  <ul list="u3e7be139">
   <li fid="u7bd42b6b" data-lake-id="u658746a6" id="u658746a6"><strong><span data-lake-id="u0150823e" id="u0150823e">final</span></strong><span data-lake-id="u4bc8eef6" id="u4bc8eef6">：用于声明变量、方法或类，使之不可变、不可重写或不可继承。</span></li>
   <li fid="u7bd42b6b" data-lake-id="uada05385" id="uada05385"><strong><span data-lake-id="u9a36d712" id="u9a36d712">finally</span></strong><span data-lake-id="u23654c9b" id="u23654c9b">：是异常处理的一部分，用于确保代码块（通常用于资源清理）总是执行。</span></li>
   <li fid="u7bd42b6b" data-lake-id="ue5b3f548" id="ue5b3f548"><strong><span data-lake-id="u1c865c35" id="u1c865c35">finalize</span></strong><span data-lake-id="ud5c5602b" id="ud5c5602b">：是Object类的一个方法，用于在对象被垃圾回收前执行清理操作，但通常不推荐使用。</span></li>
  </ul>
  <h3 data-lake-id="lzX9P" id="lzX9P"><span data-lake-id="ued480946" id="ued480946">final</span></h3>
  <p data-lake-id="ubb9ac8db" id="ubb9ac8db"><br></p>
  <p data-lake-id="ub6a56d6f" id="ub6a56d6f"><span data-lake-id="u58e98b79" id="u58e98b79">final是一个关键字，可以用来修饰变量、方法和类。分别代表着不同的含义。</span></p>
  <p data-lake-id="u94bc810a" id="u94bc810a"><span data-lake-id="u69de12fb" id="u69de12fb">​</span><br></p>
  <p data-lake-id="ub7314a60" id="ub7314a60"><strong><span data-lake-id="u38d36b8f" id="u38d36b8f" style="color: var(--tw-prose-bold)">final变量</span></strong><span data-lake-id="u3b91c1dc" id="u3b91c1dc">：即我们所说的常量，一旦被赋值后，就不能被修改。</span></p>
  <p data-lake-id="ua77e78d5" id="ua77e78d5"><br></p>
  <pre lang="java"><code>
final int x = 100;
// x = 200; // 编译错误，不能修改final变量的值

public static final String AUTHOR_NAME = "Hollis";
</code></pre>
  <p data-lake-id="ud6ca8c58" id="ud6ca8c58"><span data-lake-id="uf9ffcc1a" id="uf9ffcc1a">​</span><br></p>
  <p data-lake-id="uf2eb8107" id="uf2eb8107"><strong><span data-lake-id="u0608e56c" id="u0608e56c">final方法</span></strong><span data-lake-id="ub563ec2d" id="ub563ec2d">：不能被子类重写。</span></p>
  <p data-lake-id="u31807107" id="u31807107"><span data-lake-id="uadc5f372" id="uadc5f372">​</span><br></p>
  <pre lang="java"><code>
public final void show() {
    // ...
}
</code></pre>
  <p data-lake-id="u49a7f288" id="u49a7f288"><br></p>
  <p data-lake-id="udf75113d" id="udf75113d"><strong><span data-lake-id="ucf7b2c59" id="ucf7b2c59">final类</span></strong><span data-lake-id="u7506ae6a" id="u7506ae6a">：不能被继承。</span></p>
  <p data-lake-id="uef76ef82" id="uef76ef82"><span data-lake-id="uc9621547" id="uc9621547">​</span><br></p>
  <pre lang="java"><code>
public final class MyFinalClass {
    // ...
}
</code></pre>
  <p data-lake-id="u6164b0b8" id="u6164b0b8"><br></p>
  <h3 data-lake-id="PlcXn" id="PlcXn"><span data-lake-id="ub86bd5fe" id="ub86bd5fe">finally</span></h3>
  <p data-lake-id="u5770aed3" id="u5770aed3"><br></p>
  <p data-lake-id="uc97f09b6" id="uc97f09b6"><span data-lake-id="u2671f0d2" id="u2671f0d2">finally是一个用于异常处理，它和try、catch块一起使用。无论是否捕获或处理异常，finally块中的代码总是执行（程序正常执行的情况）。通常用于关闭资源，如输入/输出流、数据库连接等。</span></p>
  <p data-lake-id="u9b26516d" id="u9b26516d"><span data-lake-id="u45bec78f" id="u45bec78f">​</span><br></p>
  <pre lang="java"><code>
try {
    // 可能产生异常的代码
} catch (Exception e) {
    // 异常处理代码
} finally {
    // 清理代码，总是执行
}

</code></pre>
  <p data-lake-id="u61c96ed2" id="u61c96ed2"><br></p>
  <p data-lake-id="u0168dbdd" id="u0168dbdd"><br></p>
  <p data-lake-id="ua6af7609" id="ua6af7609"><br></p>
  <p data-lake-id="ucfefe30d" id="ucfefe30d"><br></p>
  <h3 data-lake-id="F8Zo7" id="F8Zo7"><span data-lake-id="u46d99032" id="u46d99032">finalize</span></h3>
  <p data-lake-id="ua2d9a553" id="ua2d9a553"><span data-lake-id="u4c2c13d2" id="u4c2c13d2">finalize是Object类的一个方法，用于垃圾收集过程中的资源回收。在对象被垃圾收集器回收之前，finalize方法会被调用，用于执行清理操作（例如释放资源）。但是，不推荐依赖finalize方法进行资源清理，因为它的调用时机不确定且不可靠。</span></p>
  <p data-lake-id="u0c410800" id="u0c410800"><span data-lake-id="udd74c2be" id="udd74c2be">​</span><br></p>
  <pre lang="java"><code>
protected void finalize() throws Throwable {
    // 在对象被回收时执行清理工作
}
</code></pre>
  <p data-lake-id="u0a38a9d4" id="u0a38a9d4"><br></p>
  <p data-lake-id="uc79453b1" id="uc79453b1"><br></p>
 </body>
</html>